package com.wutao.panzh.admin.service.Impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.panzh.entity.RouteClassification;
import com.panzh.entity.RouteImag;
import com.panzh.entity.RouteItem;
import com.panzh.entity.index.RouteToUser;
import com.wutao.panzh.admin.mapper.RouteClassificationMapper;
import com.wutao.panzh.admin.mapper.RouteImagMapper;
import com.wutao.panzh.admin.mapper.RouteItemMapper;
import com.wutao.panzh.admin.mapper.index.RouteToUserMapper;
import com.wutao.panzh.service.RouteItemService;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;

@Service
public class RouteItemServiceImple implements RouteItemService {

    @Autowired
    private RouteItemMapper routeItemMapper;

    @Autowired
    private RouteClassificationMapper routeClassificationMapper;

    @Autowired
    private RouteImagMapper routeImagMapper;
    
    @Autowired
    private RouteToUserMapper routeToUserMapper;

    @Override
    public RouteItem getRouteItemByItemName(String itemName) {
        RouteItem routeItem = new RouteItem();
        routeItem.setRouteName(itemName);
        return routeItemMapper.selectOne(routeItem);
    }

    @Override
    public void saveRouteItem(RouteItem routeItem) {
        //在数据库中查询分类的信息，并返回主键，返回主键；
        String type = routeItem.getRouteType();
        RouteClassification routeClassification = new RouteClassification();
        routeClassification.setCategorizationInformation(type);
        RouteClassification resultRoutClassification = routeClassificationMapper.selectOne(routeClassification);
        //存入对象中。
        routeItem.setCategorizationInformationId(resultRoutClassification.getId());

        //取出id，进行循环插入。
        //因为对象里面有一个自定义集合，所以自定义插入并返回主键无效！！！真是气死爸爸了。
         routeItemMapper.insertByMe(routeItem);
         //根据路线名称再去数据库里面查，查他的id；
        String routeName = routeItem.getRouteName();
        Integer id =  routeItemMapper.selectIdByRouteName(routeName);
        //进行图片的插入；
        List<RouteImag> routeImags = routeItem.getRouteImags();
        if (routeImags.size() > 0 || routeImags != null){
            for (RouteImag routeImag : routeImags) {
                routeImag.setRouteId(id);
                routeImagMapper.insert(routeImag);
            }
        }

    }

    @Override
    public PageInfo<RouteItem> getRouteItemPageInfo(Integer pageNo, Integer pageSize, String keyword) {
        PageHelper.startPage(pageNo,pageSize);
        List<RouteItem> routeItems =  routeItemMapper.selectFroSearch(keyword);
        PageInfo<RouteItem> pageInfo = new PageInfo<>(routeItems);
        return pageInfo;
    }

    @Override
    public RouteItem getRouteItemById(String routeItemId) {
        RouteItem routeItem = routeItemMapper.selectRouteItemById(routeItemId);
        return routeItem;
    }

    @Override
    public void deleteRouteItem(String routeItemId) {
        RouteItem routeItem = new RouteItem();
        routeItem.setId(Integer.parseInt(routeItemId));
        routeItemMapper.delete(routeItem);

        //删除对应的图片；
        RouteImag routeImag = new RouteImag();
        routeImag.setRouteId(Integer.parseInt(routeItemId));
        routeImagMapper.delete(routeImag);
    }

    @Override
    public List<RouteItem> getRouteAllByItemName(String routeName) {
        List<RouteItem> routeItemList = routeItemMapper.selectRouteAllByItemName(routeName);
        return routeItemList;
    }

    @Override
    public void updateRouteItem(RouteItem routeItem) {
        //在数据库中查询分类的信息，并返回主键，返回主键；
        String type = routeItem.getRouteType();
        RouteClassification routeClassification = new RouteClassification();
        routeClassification.setCategorizationInformation(type);
        RouteClassification resultRoutClassification = routeClassificationMapper.selectOne(routeClassification);
        //存入对象中。
        routeItem.setCategorizationInformationId(resultRoutClassification.getId());
        routeItemMapper.updateRouteItemById(routeItem);
        String routeName = routeItem.getRouteName();
        Integer id =  routeItemMapper.selectIdByRouteName(routeName);
        //进行图片的插入；
        List<RouteImag> routeImags = routeItem.getRouteImags();
        if (routeImags.size() > 0 || routeImags != null){
            for (RouteImag routeImag : routeImags) {
                routeImag.setRouteId(id);
                routeImagMapper.insert(routeImag);
            }
        }
    }

    @Override
    public PageInfo<RouteItem> getAllIndexRouteItem(Integer pageNo, Integer pageSize, Integer classificationId) {
        PageHelper.startPage(pageNo,pageSize);
        List<RouteItem> routeItems =  routeItemMapper.selectFroSearchByClassificationId(classificationId);
//        List<IndexRouteItem> indexRouteItems = new ArrayList<>();
//        for (RouteItem routeItem : routeItems) {
//            IndexRouteItem indexRouteItem =  routeItem.getIndexRouteItem();
//            indexRouteItems.add(indexRouteItem);
//        }
        PageInfo<RouteItem> pageInfo = new PageInfo<>(routeItems);
        return pageInfo;
    }

    @Override
    public void addCollection(Integer itemId, Integer userId) {
        RouteToUser routeToUser = new RouteToUser();
        routeToUser.setUserId(userId);
        routeToUser.setRouteItemId(itemId);
        routeToUserMapper.insert(routeToUser);
    }


}
